A storage server is a computer system that is used to store and retrieve data on behalf of one or more clients on a network. A storage server operates on behalf of one or more clients to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based disks or tapes. In conventional network storage systems, the mass storage devices can be organized into one or more groups of drives (e.g., redundant array of inexpensive drives (RAID)).
A storage server can be configured to service file-level requests from clients, as in the case of file servers used in a network attached storage (NAS) environment. Alternatively, a storage server can be configured to service block-level requests from clients, as done by storage servers used in a storage area network (SAN) environment. Further, some storage servers are capable of servicing both file-level and block-level requests, as done by certain storage servers made by NetApp, Inc. of Sunnyvale, Calif.
It is desirable to provide a fault tolerant storage system. Fault-tolerance or graceful degradation is the property that enables a system to continue operating properly in the event of the failure of (or one or more faults within) some of its components. One way of providing fault tolerance in a storage system is by redundancy, i.e. providing multiple identical instances of the same system/data and switching to one of the remaining instances in case of a failure (failover). Implementations of RAID, redundant array of independent disks are examples of a fault-tolerant storage device that uses data redundancy. Another way of providing fault tolerance is by fault isolation. When a failure occurs, the system must be able to isolate the failure to the offending component.